layui.use(['table', 'laydate', 'util', 'upload'], function () {
    // 获得模块对象
    var table = layui.table;
    var form = layui.form;
    var $ = layui.jquery;
    var layer = layui.layer;
    var laydate = layui.laydate;
    var util = layui.util;
    var upload = layui.upload;

    // 汽车站数据表格渲染
    table.render({
        elem: '#busStationTable',
        url: 'route/busStation',
        method: 'get',
        toolbar: '#busStationToolbar', // 开启头部工具栏，并为其绑定左侧模板
        cols: [[
            { type: 'numbers' } // 序号
            , {
                type: 'checkbox'// 复选框
            }
            , { field: 'busStationId', title: '汽车站ID', hide: true }
            , { field: 'city', title: '城市', width: "12%" }
            , { field: 'busStationName', title: '汽车站名字' }
            , { field: 'address', title: '汽车站地址' }
            , { field: 'longitude', title: '经度', hide: true }
            , { field: 'latitude', title: '纬度', hide: true }
            , { field: 'telephone', title: '电话', hide: true }
            , { field: 'createTime', title: '创建时间', sort: true, hide: true, templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy-MM-dd HH:mm:ss')}}</div>" }
            , { field: 'useable', title: '是否可用', unresize: true, templet: '#checkboxTpl', align: "center", width: "15%" }
            , { fixed: 'right', align: 'center', toolbar: '#barDemo', width: "20%" }//自定义按钮
        ]]
        , page: { //支持传入 laypage 组件的所有参数（某些参数除外，如：jump/elem） - 详见文档
            layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'] //自定义分页布局
            , groups: 1 //只显示 1 个连续页码
            , first: false //不显示首页
            , last: false //不显示尾页
            , limit: 5 // 每页显示的条数
            , limits: [5, 10, 20, 30, 50] // 每页条数的选择项
            /*,prev: '<button type="button" class="layui-laypage-btn">上一页</button>'
             ,next: '<button type="button" class="layui-laypage-btn">下一页</button>'*/
        }
        , loading: true // 是否显示加载条(切换分页的时候显示）
        , title: '汽车站数据表' // 定义 table 的大标题（在文件导出等地方会用到）
    });
    var markers = [];
	//var markerClusterer;
    // 头部搜索框
    form.on('submit(busStationSearchBtn)', function (data) {
    	 //window.location.reload();
    	// $.getScript('http://localhost:8080/bestinc/static/js/route/resource/map.js');
        table.reload('busStationTable', {
            url: 'route/busStation',
            where: { // 设定异步数据接口的额外参数，任意设
                city: $("#city").val(),
                busStationName: $("#busStationName").val(),
                longitude: $("#longitude").val(),
                latitude: $("#latitude").val(),
                useable: $("#useable").val(),
            }, page: {
                curr: 1 //从第一页开始
            }, limit: 5
        });
        
        
        /*$.ajax({
            async: true, 
            type: "get",
            url: 'route/busStations',
            data: {
            	 city: $("#city").val(),
                 busStationName: $("#busStationName").val(),
                 longitude: $("#longitude").val(),
                 latitude: $("#latitude").val(),
                 useable: $("#useable").val(),
            },
            datatype: 'json',
            success: function (result) {
            	 //map.clearOverlays();
            	clearAll();
            	map.centerAndZoom(points, 1);
            	for (var i = 0; i < result.data.length; i++) {
                    pt = new BMap.Point(result.data[i].longitude, result.data[i].latitude);
                    markers.push(new BMap.Marker(pt));
                   
                }
            	//最简单的用法，生成一个marker数组，然后调用markerClusterer类即可。
                markerClusterer = new BMapLib.MarkerClusterer(map, { markers: markers });
            }
        });*/
        
        return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可
        
    });
    


    //监听行工具事件
    table.on('tool(test)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
            , layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent === 'del') {
            layer.open({
                type: 1,
                content: '<div style="padding: 20px 80px;">确定删除记录?</div>',
                title: ' ', // 标题
                btn: ['确定', '取消'],
                yes: function (index, layero) {
                    var busStationId = data.busStationId;
                    $.ajax({
                        async: true, // 默认为true，false表示同步，如果当前请求没有返回则不执行后续代码
                        type: "post",
                        url: 'route/busStation/' + busStationId,
                        data: {
                            _method: 'DELETE'
                        },
                        datatype: 'json',
                        success: function (result) {
                            if (result == 1) {
                                layui.use('layer', function () {
                                    parent.layer.msg('删除中...', {
                                        icon: 16, shade: 0.3, time: 1500

                                    }, function () {
                                        //倒计时完成后需要执行的代码
                                        // 关闭弹窗
                                        layer.close(index);
                                        layer.msg("删除成功！", {
                                            icon: 1, // 图标，可输入范围0~6
                                            time: 500
                                            // 2秒关闭（如果不配置，默认是3秒）
                                        });
                                       // window.location.reload()
                                        $.getScript('http://localhost:8080/bestinc/static/js/route/resource/map.js');
                                        // 刷新数据表格
                                        table.reload('busStationTable', {
                                            url: 'route/busStation'
                                        });

                                    });
                                });


                            } else {
                                layui.use('layer', function () {
                                    parent.layer.msg('删除中...', {
                                        icon: 16, shade: 0.3, time: 2000
                                        
                                    }, function () {
                                        //倒计时完成后需要执行的代码
                                        // 关闭弹窗
                                        layer.close(index);
                                        layer.msg("删除失败！", {
                                            icon: 2, // 图标，可输入范围0~6
                                            time: 500
                                            // 2秒关闭（如果不配置，默认是3秒）
                                        });
                                        // 刷新数据表格
                                        /*table.reload('busStationTable', {
                                            url : 'route/busStation'
                                        });*/
                                    });
                                });
                            }
                        }
                    });
                }
            });
        } else if (layEvent === 'edit') {
        	if(data.useable == 'Y'){
            var longitude = data.longitude;//获取经度
            var latitude = data.latitude;//获取纬度
            //点击详情进行定位
            if (longitude != "" && latitude != "") {
                clearAll();
                //map.clearOverlays();//清除地图覆盖物
                //yueYang();//重新设置显示区域为岳阳市岳阳楼区
                var new_point = new BMap.Point(longitude, latitude);
                map.centerAndZoom(new_point, 19);
                console.log(map);
                var marker = new BMap.Marker(new_point);//创建标注
                map.addOverlay(marker);//将标注添加到地图中
                marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
                /*map.setMapType(BMAP_PERSPECTIVE_MAP);*/     //修改地图类型为3D地图
                map.panTo(new_point);
                //var infoWindow = new BMap.InfoWindow(sContent); // 创建信息窗口对象
                //map.openInfoWindow(infoWindow,new_point); //开启信息窗口
            } else {
                layer.alert('ID：' + data.id + ' 定位失败，经纬度信息为空')
            }
        	}else{
        		layer.msg("定位失败！", {
                    icon: 2, // 图标，可输入范围0~6
                    time: 500
                    // 2秒关闭（如果不配置，默认是3秒）
                });
        	}
        }
    });


    //添加模态框初始化
    var initAddBusStationModal = function () {
        // 弹出一个页面层
        layer.open({
            type: 1 // 基本层类型0~4，1为页面层
            , title: '添加汽车站' // 标题
            , skin: 'layui-layer-lan'//设置表头颜色
            //,area : [ '400px' ] // 宽高 只写一个参数就是表示宽度，高度会自适应
            , content: $("#addBusStationModal") // 文本、html都行
            , anim: 0 // 弹出动画
            , area: ['520px', '580px']
            , resize: false // 是否允许拉伸

            , cancel: function (index, layero) {
                //layer.msg("关闭了哦");
                // return false; 则不能点击
            }
            , end: function () {
                $("#addBusStationForm")[0].reset();
            }
        });

        // 百度地图API功能
        function G(id) {
            return document.getElementById(id);
        }
        var r1;
        var r2;
        var geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(function (r) {
            if (this.getStatus() == BMAP_STATUS_SUCCESS) {
                var mk = new BMap.Marker(r.point);
                map.addOverlay(mk);
                map.panTo(r.point);

                r1 = r.point.lng;
                r2 = r.point.lat;
            }
            else {
                alert('failed' + this.getStatus());
            }
        }, { enableHighAccuracy: true })

        var map = new BMap.Map("l-map", { enableMapClick: false });
        var point = new BMap.Point(r1, r2);
        map.centerAndZoom(point, 18);                   // 初始化地图,设置城市和地图级别。
        map.enableDragging();//启用地图拖拽事件，默认启用(可不写)
        map.enableScrollWheelZoom();//启用地图滚轮放大缩小

        var ac = new BMap.Autocomplete(    //建立一个自动完成的对象
            {
                "input": "suggestId"
                , "location": map
            });

        ac.addEventListener("onhighlight", function (e) {  //鼠标放在下拉列表上的事件
            var str = "";
            var _value = e.fromitem.value;
            var value = "";
            if (e.fromitem.index > -1) {
                value = _value.province + _value.city + _value.district + _value.street + _value.business;
            }
            str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;

            value = "";
            if (e.toitem.index > -1) {
                _value = e.toitem.value;
                value = _value.province + _value.city + _value.district + _value.street + _value.business;
            }
            str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
            G("searchResultPanel").innerHTML = str;
        });

        var myValue;
        ac.addEventListener("onconfirm", function (e) {    //鼠标点击下拉列表后的事件
            var _value = e.item.value;
            myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
            G("searchResultPanel").innerHTML = "onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;

            setPlace();
        });

        function setPlace() {
            map.clearOverlays();    //清除地图上所有覆盖物
            function myFun() {
                var pp = local.getResults().getPoi(0).point;    //获取第一个智能搜索的结果
                console.log(local.getResults().getPoi(0));
                $("#addBusStationModal input[name='busStationId']").val(local.getResults().getPoi(0).uid); // 将汽车站id塞入输入框
                $("#addBusStationModal input[name='telephone']").val(local.getResults().getPoi(0).phoneNumber); // 将电话号码塞入输入框
                $("#addBusStationModal input[name='city']").val(local.getResults().getPoi(0).city); // 将城市塞入输入框
                $("#addBusStationModal input[name='busStationName']").val(local.getResults().getPoi(0).title); // 将车站名字塞入输入框
                $("#addBusStationModal input[name='address']").val(local.getResults().getPoi(0).address); // 将地址塞入输入框
                $("#addBusStationModal input[name='longitude']").val(pp.lng); // 将经度塞入输入框
                $("#addBusStationModal input[name='latitude']").val(pp.lat); // 将纬度塞入输入框
                map.centerAndZoom(pp, 18);
                var marker = new BMap.Marker(pp)
                map.addOverlay(marker);    //添加标注
                marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
            }
            var local = new BMap.LocalSearch(map, { //智能搜索
                onSearchComplete: myFun
            });
            local.search(myValue);
        }
    };
    // 添加模态框 End

    // 添加表单提交
    form.on('submit(addbusStationBtn)', function (data) {
        console.log(data.field);
        // 执行后台代码
        $.ajax({
            type: 'POST',
            async: false,
            url: 'route/busStation',
            data: data.field,
            success: function (data) {
                // 关闭页面上所有类型的所有弹框
                //layer.closeAll();
                if (data == 1) {
                    layui.use('layer', function () {
                        parent.layer.msg('添加中...', {
                            icon: 16, shade: 0.3, time: 1500
                        }, function () {
                            //alert("111");
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            //layer.close(index);
                            layer.closeAll();
                            layer.msg("添加成功！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1000
                            });
                           // window.location.reload()
                            $.getScript('http://localhost:8080/bestinc/static/js/route/resource/map.js');
                            // 刷新数据表格
                            table.reload('busStationTable', {
                                url: 'route/busStation'
                            });

                        });
                    });
                } else {
                    layui.use('layer', function () {
                        parent.layer.msg('添加中...', {
                            icon: 16, shade: 0.3, time: 1500

                        }, function () {
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            layer.msg("添加失败！", {
                                icon: 3, // 图标，可输入范围0~6
                                time: 1000
                            });
                        });
                    });
                }
            },
            error: function () {

                layui.use('layer', function () {
                    parent.layer.msg('添加中...', {
                        icon: 16, shade: 0.3, time: 1500

                    }, function () {
                        //倒计时完成后需要执行的代码
                        // 关闭弹窗
                        layer.msg("后台异常！", {
                            icon: 2, // 图标，可输入范围0~6
                            time: 1000
                        });
                    });
                });
            }
        });
        // 刷新数据表格
        /*table.reload('busStationTable', {
            url : 'route/busStation'
        });*/
        return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可。
    });
    // 添加模态框提交 End

    // 关闭模态框 新增和修改模态框共用这个点击事件
    $(".modalClose").click(function () {
        // 关闭页面上所有类型的所有弹框
        layer.closeAll();
    });
    // 关闭模态框 新增和修改模态框共用这个点击事件 End

    // 修改表单初始化 
    var initUpdateBusStationModal = function (data) {
        // 弹出一个页面层
        layer.open({
            type: 1 // 基本层类型0~4，1为页面层
            ,
            title: '修改汽车站' // 标题
            , skin: 'layui-layer-lan'//设置表头颜色
            , area: ['520px', '430px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
            ,
            content: $("#updateBusStationModal") // 文本、html都行
            ,
            anim: 0 // 弹出动画
            ,
            resize: false // 是否允许拉伸
            ,
            end: function () { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
                // 清空表单
                $("#updateBusStationForm")[0].reset();
            }
        });

        // 表单赋值
        form.val('updateBusStationForm', {
            "busStationId": data.busStationId,
            "city": data.city,
            "busStationName": data.busStationName,
            "address": data.address,
            "longitude": data.longitude,
            "latitude": data.latitude,
            "telephone": data.telephone,
            "useable": data.useable
        });
    }
    // 修改表单初始化 End

    //修改表单提交
    form.on('submit(updatebusStationBtn)', function (data) {
        console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
        console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
        console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
        //执行后台代码
        $.ajax({
            type: 'POST',
            async: false,
            url: 'route/busStation',
            data: data.field,
            success: function (data) {
                if (data == 1) {
                    layui.use('layer', function () {
                        parent.layer.msg('修改中...', {
                            icon: 16, shade: 0.3, time: 1500
                        }, function () {
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            //layer.close(index);
                            layer.closeAll();
                            layer.msg("修改成功！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1000
                            });
                            // 刷新数据表格
                            //window.location.reload()
                            $.getScript('http://localhost:8080/bestinc/static/js/route/resource/map.js');
                            table.reload('busStationTable', {
                                url: 'route/busStation'
                            });

                        });
                    });
                } else {
                    layui.use('layer', function () {
                        parent.layer.msg('修改中...', {
                            icon: 16, shade: 0.3, time: 1500

                        }, function () {
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            layer.msg("修改失败！", {
                                icon: 3, // 图标，可输入范围0~6
                                time: 1000
                            });
                        });
                    });
                }

            }
        });
        //刷新数据表格
        /*table.reload('busStationTable', {
            url : 'route/busStation'
        });*/
        return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
    });
    //修改表单提交 End

    // 头工具栏事件
    table.on('toolbar(test)', function (obj) {
        // 获取当前表格选中状态和选中的数据
        var checkStatus = table.checkStatus(obj.config.id);
        // 区分点击的按钮
        switch (obj.event) {
            case 'addbusStation':
                // 弹出新增模态框
                initAddBusStationModal();

                break;
            case 'updatebusStation':
                // 选择的数据数量
                if (checkStatus.data.length > 1) {
                    layer.msg("最多只能修改一行数据哦！！", {
                        icon: 0, //图标，可输入范围0~6
                        time: 1500
                        //2秒关闭（如果不配置，默认是3秒）
                    });
                } else if (checkStatus.data.length < 1) {
                    layer.msg("请选择要修改的数据哦！！", {
                        icon: 3, //图标，可输入范围0~6
                        time: 1500
                        //2秒关闭（如果不配置，默认是3秒）
                    });
                } else if (checkStatus.data[0].useable == 'N') {
                    layer.msg("该数据被禁用了哦！！", {
                        icon: 4, //图标，可输入范围0~6
                        time: 1500
                        //2秒关闭（如果不配置，默认是3秒）
                    });
                }
                else {
                    // 弹出修改模态框，传递当前选中的一行数据过去
                    initUpdateBusStationModal(checkStatus.data[0]);
                }
                break;
            case 'frozenRecord':
                // 当前选中行的数据
                var data = checkStatus.data;
                //判断是否有选中
                if (checkStatus.data.length < 1) {
                    layer.msg("请选择你要冻结的数据！！", {
                        icon: 4, //图标，可输入范围0~6
                        time: 1500//2秒关闭（如果不配置，默认是3秒）
                    });
                } else {
                    // 定义一个要删除的所有资源ID的字符串
                    var busStationIdStr = "";
                    // 遍历传递过来的要删除的数据
                    for (var i = 0; i < data.length; i++) {
                        if (data[i].useable == 'N') {
                            layer.msg("所选数据中有被冻结的！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1500
                                // 2秒关闭（如果不配置，默认是3秒）
                            });
                            return;
                        }
                        // 拿出用户ID进行拼接
                        busStationIdStr += data[i].busStationId + ",";

                    }
                    // 截取掉因为拼接产生的多余的一个逗号
                    busStationIdStr = busStationIdStr.substring(0, busStationIdStr.length - 1);
                    frozenORrecoverBusStation(busStationIdStr, 'N');
                }
                break;
            case 'restoreRecord':
                // 当前选中行的数据
                var data = checkStatus.data;
                //判断是否有选中
                if (checkStatus.data.length < 1) {
                    layer.msg("请选择你要还原的数据！！", {
                        icon: 4, //图标，可输入范围0~6
                        time: 1500//2秒关闭（如果不配置，默认是3秒）
                    });
                } else {
                    // 定义一个要删除的所有资源ID的字符串
                    var busStationIdStr = "";
                    // 遍历传递过来的要删除的数据
                    for (var i = 0; i < data.length; i++) {
                        if (data[i].useable == 'Y') {
                            layer.msg("所选数据中有可用的！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1500
                                // 2秒关闭（如果不配置，默认是3秒）
                            });
                            return;
                        }
                        // 拿出资源ID进行拼接
                        busStationIdStr += data[i].busStationId + ",";
                    }
                    // 截取掉因为拼接产生的多余的一个逗号
                    busStationIdStr = busStationIdStr.substring(0, busStationIdStr.length - 1);
                    frozenORrecoverBusStation(busStationIdStr, 'Y');
                }
                break;
        }
        ;
    });
    // 监听锁定操作
    form.on('switch(useable)', function (obj) {
        frozenORrecoverBusStation(obj.value, this.checked == true ? 'Y' : 'N');
    });

    // 冻结或还原的方法
    var frozenORrecoverBusStation = function (busStationIdStr, status) {
        // 用户ID
        var busStationId = busStationIdStr;
        // 定义提示信息, 状态
        var msg, useable;
        if (status == 'Y') {
            msg = "还原", useable = 'Y';
        } else {
            msg = "禁用", useable = 'N';
        }
        // 发送异步请求冻结或还原资源
        $.ajax({
            async: false, // 默认为true，false表示同步，如果当前请求没有返回则不执行后续代码
            type: "post",
            url: 'route/busStation/' + busStationId + "/" + useable,
            data: {
                _method: 'DELETE'
            },
            datatype: 'json',
            success: function (result) {
                if (result == "success") {
                    layer.msg(msg + "成功！", {
                        icon: 1, // 图标，可输入范围0~6
                        time: 1500
                        // 2秒关闭（如果不配置，默认是3秒）
                    });
                } else {
                    layer.msg(msg + "失败！", {
                        icon: 2,
                        time: 1500
                    });
                }
                // 刷新数据表格
                table.reload('busStationTable', {
                    url: 'route/busStation'
                });
            }
        });
    }

});